import { defineStore } from 'pinia'

// 定义全局配置的Pinia存储
export const useConfigStore = defineStore('config', {
  state: () => ({
    // 初始化配置，包含表单大小和暗黑模式设置
    globalConfig: {
      formSize: 'default', // 默认表单大小
      darkMode: false, // 默认不启用暗黑模式
      tableSize: 'medium'
    }
  }),
  actions: {
    // 设置全局配置
    async setGlobalConfig(config) {
      this.globalConfig = { ...this.globalConfig, ...config }
      console.log('设置全局配置:', this.globalConfig)
      // 保存配置到SQLite数据库
      try {
        const result = await window.electronAPI.saveConfig({
          key: 'globalConfig',
          value: JSON.stringify(this.globalConfig)
        })
        if (!result.success) {
          console.error('保存配置失败:', result.message)
        }
      } catch (error) {
        console.error('保存配置时发生错误:', error)
      }
    },

    // 加载配置从SQLite数据库
    async loadGlobalConfig() {
      try {
        const result = await window.electronAPI.loadConfig('globalConfig')
        console.log('加载配置结果:', result)
        if (result.success && result.value) {
          this.globalConfig = JSON.parse(result.value)
        }
      } catch (error) {
        console.error('加载配置失败:', error)
      }
    },

    // 设置暗黑模式
    async setDarkMode(isDark) {
      this.globalConfig.darkMode = isDark
      try {
        const result = await window.electronAPI.saveConfig({
          key: 'globalConfig',
          value: JSON.stringify(this.globalConfig)
        })
        if (!result.success) {
          console.error('保存暗黑模式设置失败:', result.message)
        }
      } catch (error) {
        console.error('保存暗黑模式设置时发生错误:', error)
      }
    },

    // 设置表单大小
    async setFormSize(size) {
      this.globalConfig.formSize = size
      try {
        const result = await window.electronAPI.saveConfig({
          key: 'globalConfig',
          value: JSON.stringify(this.globalConfig)
        })
        if (!result.success) {
          console.error('保存表单大小设置失败:', result.message)
        }
      } catch (error) {
        console.error('保存表单大小设置时发生错误:', error)
      }
    },
    async setTableSize(size) {
      this.globalConfig.tableSize = size
      try {
        const result = await window.electronAPI.saveConfig({
          key: 'globalConfig',
          value: JSON.stringify(this.globalConfig)
        })
        if (!result.success) {
          console.error('保存表格大小设置失败:', result.message)
        }
      } catch (error) {
        console.error('保存表格大小设置时发生错误:', error)
      }
    }
  },
  getters: {
    // 获取全局配置
    getGlobalConfig: (state) => state.globalConfig,

    // 获取暗黑模式状态
    isDarkMode: (state) => state.globalConfig.darkMode,
    // 获取表单大小
    getFormSize: (state) => state.globalConfig.formSize,
    // 获取表格大小
    getTableSize: (state) => state.globalConfig.tableSize
  }
})
